package com.shunhao.network.rxjava

import com.blankj.utilcode.util.ToastUtils
import com.shunhao.network.exception.ApiException
import com.shunhao.network.model.NeedLoginEvent
import com.shunhao.utils.LogUtil.d
import io.reactivex.observers.DisposableObserver
import org.greenrobot.eventbus.EventBus
import retrofit2.HttpException
import java.io.IOException
import java.net.SocketTimeoutException

/**
 *类作用描述: BaseObserverWithCode 权限地方用
 *@author      KangGuiYang
 *创建时间      2020/7/24 16:41
 *邮箱        kangguiyang2@gmail.com
 *公司        南京舜贝佳信息科技 Shunbega.com
 */
abstract class BaseObserverWithCode<T> : DisposableObserver<T>() {

    override fun onNext(t: T) {
        // 成功
        onSuccess(t)
    }

    override fun onError(e: Throwable) {
        when (e) {
            is IOException -> {
                onError("检查您的网络链接，或稍后再试",0)
            }
            is SocketTimeoutException -> {
                onError("网络超时了",0)
            }
            // 项目中的
            is ApiException ->{
                onError(e.detailMessage,e.statusCode)
            }
            else -> {
                // 统一处理
                onError(e.message!!,0)
            }
        }

    }

    override fun onComplete() {
    }

    protected abstract fun onSuccess(t: T?)

    //protected abstract fun onError(message: String?)

    protected abstract fun onError(message: String?,code:Int)

}